# 作者: 菅世博
# 2025年02月19日11时23分32秒
# 512326042@qq.com

# 1、字符串，集合，函数缺省参数等所有接口基本功能
# 字符串的操作
def use_str_base():
    # 字符串的操作
    my_str = 'Hello python'
    for x in my_str:
        print(x, end='')
    print()
    print(my_str.find('ll'))
    print(my_str.replace('l', 'L', 1))  # 替换字符串 #_count:替换次数
    print(my_str.split(','))  # 分割字符串 #split括号内不写默认按空格分割
    print(type(my_str))
    print()
    str2 = 'hello\nworld\nhow are you\ntoday is a good day'
    print(str2.splitlines())  # 按行分割字符串
    print(str2[::-1])  # 字符串反转
    # 字符串切片
    num_str = '0123456789'

    # 截取从 2 ~ 5 位置 的字符串
    print(num_str[2:6])  # 2345

    # 截取从 2 ~ 末尾 的字符串
    print(num_str[2:])  # 23456789

    # 截取从 开始 ~ 5 位置 的字符串
    print(num_str[:6])  # 012345

    # 截取完整的字符串
    print(num_str[:])  # 0123456789

    # 从开始位置，每隔一个字符截取字符串
    print(num_str[::2])  # 02468

    # 从索引 1 开始，每隔一个取一个
    print(num_str[1::2])  # 13579

    # 截取从 2 ~ 末尾 - 1 的字符串
    print(num_str[2::-1])  # 2345678

    # 截取字符串末尾两个字符
    print(num_str[-2:])  # 89

    # 字符串的逆序（面试题）
    print(num_str[::-1])  # 9876543210

    # 97531
    print(num_str[::-2])

    # 86420,如果步长为负数，那么前面的索引一定要比后面的索引大
    print(num_str[-2::-2])


# 集合的操作
print('-' * 50)


def use_set():
    # 集合的操作
    my_set = set()  # 创建一个空集合
    print(my_set)
    print(type(my_set))

    my_set = {'apple', 'banana', 'orange'}
    print('apple' in my_set)  # 判断元素是否在集合中

    a = set('abracadabra')
    b = set('alprazolam')
    print(a, b)
    print(a - b)  # a和b的差集
    print(a | b)  # a和b的并集
    print(a & b)  # a和b的交集
    print(a ^ b)  # a和b中不同时存在的元素
    print(a - b == a.difference(b))  # a和b的差集等价运算

    print()

    my_set = {'apple', 'banana', 'orange'}
    my_set2 = my_set.copy()
    print(f'id(my_set) = {id(my_set)} id(my_set2) = {id(my_set2)}')
    print(my_set2)

    my_set3 = my_set
    print(my_set3)


# 函数缺省参数
def use_func(a, b=10):
    print(a, b)


def use_func2(name, title='', gender=True):
    gender_text = '男生'
    if not gender:
        gender_text = '女生'

    print('%s%s 是 %s' % (title, name, gender_text))


def print_demo(num, num2, *args, **kwargs):
    print(num)
    print(num2)
    print(args)
    print(kwargs)


def print_demo1(num, *args, **kwargs):
    print_demo(num, *args, **kwargs)


print_demo1(1, 2, 3, 4, 5, name='小明', gender='男生')
# use_func2('小明', '班长', False)
# use_func(1)
# use_set()
# use_str_base()



#2、